22
תגובות

הכנסת רק מספרים

פתח razand ,
איך אפשר ליצור תיבת טקסט שיהיה אפשר להכניס עליה רק מספרים?
עדיפות ל JQ

22 תשובות

avatar ענה iiddaannyy ב 18 ליוני 2012 #

אירוע keypress, בדיקה האם הכפתור שנלחץ הוא מספר, אם לא, return false.

avatar ענה razand ב 18 ליוני 2012 #

OK תודה
אבל לא הבנתי איך אני יכול לעשות שלתיבה יכניסו כמה אותיות שרוצים אבל רק 4 מספרים..

avatar ענה iiddaannyy ב 18 ליוני 2012 #

מאפיין maxlength ל-input.

avatar ענה razand ב 18 ליוני 2012 #

לא הבנת את השאלה...

avatar ענה Y_Y ב 18 ליוני 2012 #

http://www.w3schools.com/html5/att_input_pattern.asp

avatar ענה razand ב 18 ליוני 2012 #

התכוונתי לכך שיהיה ניתן להכניס לתיבה רק 4 מספרים.
אבל אותיות שלא תיהיה להם הגבלה

avatar ענה iiddaannyy ב 18 ליוני 2012 #

כי ערכת אותה.

בכל מקרה, בתנאי שבודק האם מה שהוכנס הוא מספר תצטרך גם לבדוק האם בתיבת הטקסט יש רק 4 ספרות.

avatar ענה razand ב 18 ליוני 2012 #

pattern="[0-9]{4}"

לא עבד..

avatar ענה Y_Y ב 18 ליוני 2012 #

אלגוריתם:

תפיסת לחיצת כפתור onkeypress
בדיקה על כל תו האם הוא מספר?
כן-תוסיף למונה המספרים 1 ותבדוק אם הוא שווה ל4 אם שווה ל4 ..עצור!
לא-קבל את הקלט והמשך


:)

avatar ענה razand ב 18 ליוני 2012 #

ואם מוחקים תו?

avatar ענה Y_Y ב 18 ליוני 2012 #

כל לחיצה במקלדת מאופיינת בקוד אחר..
תבדוק אם שווה למחיקה אם כן תבדוק מה הוא מחק לפי מיקום התו..
או
אם מספר התווים בקלט קטן מהפעם האחרונה שנבדק
אני הייתי שומר את המיקום של המספרים בנפרד ואחרי זה יכול לבדוק בקלות האם זה היה מספר שהוא מחק וככה אפשר לחסר ממונה המספרים

avatar ענה razand ב 18 ליוני 2012 #

<script type="text/javascript">
function numbersonly(myfield, e, dec)
{
var numbernum = 0;
var key;
var keychar;

if (window.event)
   key = window.event.keyCode;
else if (e)
   key = e.which;
else
   return true;
keychar = String.fromCharCode(key);

// control keys
if ((key==null) || (key==0) || (key==8) ||
    (key==9) || (key==13) || (key==27) ){
   return true;
    numbernum = numbernum - 1;
  }

// numbers
else if ((("0123456789").indexOf(keychar) > -1)){
  if(numbernum == 4){
 return false;
  }else{
    return true;
 numbernum = numbernum + 1;
  }
}
// decimal point jump
else if (dec && (keychar == "."))
   {
   myfield.form.elements[dec].focus();
   return true;
   }
else
   return true;
}

</script>


לקחתי קוד מוכן וניסיתי להתאים אותו למה שאני צריך
ולא עובד

avatar ענה iiddaannyy ב 18 ליוני 2012 #

הנה קוד מוכן:

$('yourSelector').keypress(function(e) {
    var key = e.which ? e.which : e.keyCode;
    if ((key >= 48 && key <= 57 || key >= 96 && key <= 105) && $(this).val().length - $(this).val().replace(/\d/g, '').length < 4) {
        return true;
    }
    return false;
});

avatar ענה iiddaannyy ב 18 ליוני 2012 #

התנאי כאן מורכב משלושה ביטיים (יש שם חמישה אבל חילקתי את זה לעיקריים):
(
ביטוי ראשון - בודק האם הכפתור שנלחץ הוא אחד מהמספרים למעלה במקלדת (מעל האותיות).
או
ביטוי שני - בדוק האם הכפתור שנלחץ הוא אחד מהמספרים ב-numpad. המספרים שבצד ימין.
)
וגם
ביטוי שלישי - בודק שמספר הספרות בתיבת הטקסט קטן מ-4.

avatar ענה razand ב 18 ליוני 2012 #

הוא אל בדיוק עובד.
אי אפשר לכניס תוים מסויימים כמו R
וגם אי אפשר למחוק את הטקסט.
איך ניתן לתקן?

avatar ענה razand ב 18 ליוני 2012 #

לא משנה תיקנתי אותו הנה המתוקן:

$('#id').keypress(function(e) {
    var key = e.which ? e.which : e.keyCode;
    if ((key >= 48 && key <= 57 || key >= 95 && key <= 105)) {
    if($(this).val().length - $(this).val().replace(/\d/g, '').length < 4){
        return true;
    }else{
    return false;
    }
    }
    return true;
});

avatar ענה iiddaannyy ב 18 ליוני 2012 #

נכון, שכחתי שאתה רוצה שיהיה אפשר להכניס כמה אותיות שרוצים, אבל רק 4 מספרים.

$('yourSelector').keypress(function(e) {
  var key = e.which ? e.which : e.keyCode;
  if ($(this).val().length - $(this).val().replace(/\d/g, '').length >= 4 && (key >= 48 && key <= 57 || key >= 96 && key <= 105)) {
    return false;
  }
  return true;
});

avatar ענה razand ב 18 ליוני 2012 #

^^ בדקתי את הקוד הזה
אבל הוא גם לא עובד..

avatar ענה iiddaannyy ב 18 ליוני 2012 #

ערכתי, שכחתי להחליף את הסימון.

avatar ענה razand ב 18 ליוני 2012 #

איך אפשר לדעת איזה מספר זה איזה מקש?לדוגמה עם אני רצה את כל המקשיים שהם אותיות באגלית
איך אני מגלה את המספרים שלהם?

avatar ענה iiddaannyy ב 18 ליוני 2012 #

תחפש בגוגל, יש טבלאות של זה. למרות שאני די משוכנע שאפשר להפוך את המספר הזה לאות המתאימה לו וככה זה הרבה יותר קל.

avatar ענה משתמש_242893 ב 18 ליוני 2012 #

הנה ביטוי רגולרי שאמור לעבוד, אם מה שאתה רוצה זה כמות לא מוגבלת של אותיות באנגלית, ומקסימום 4 מספרים:

^([a-zA-Z]*\d?[a-zA-Z]*){4}$